package com.zxtc.wh.servlet.upFile;//package com.zxtc.com.zxtc.wh.servlet.upFile;
//
//import org.apache.commons.fileupload.FileItem;
//import org.apache.commons.fileupload.disk.DiskFileItemFactory;
//import org.apache.commons.fileupload.servlet.ServletFileUpload;
//
//import javax.servlet.ServletException;
//import javax.servlet.annotation.WebServlet;
//import javax.servlet.http.HttpServlet;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//import java.io.File;
//import java.io.IOException;
//import java.io.PrintWriter;
//import java.util.List;
//
///**
// */
////@WebServlet("/UploadFileServlet")
//public class UploadFileServlet extends HttpServlet {
//    private static final long serialVersionUID = 1L;
//    private static String tempFileDir = System.getProperty("java.io.tmpdir");
//
//    // 上传文件存储目录
//    private static final String UPLOAD_DIRECTORY = "upload";
//
//    // 上传配置
//    private static final int MEMORY_THRESHOLD = 1024 * 1024 * 3;  // 3MB
//    private static final int MAX_FILE_SIZE = 1024 * 1024 * 40 * 10; // 40MB*10
//    private static final int MAX_REQUEST_SIZE = 1024 * 1024 * 50 * 10; // 50MB*10
//
//    /**
//     * 获取上传的数据、文件
//     */
//    protected void doPost(HttpServletRequest request,
//                          HttpServletResponse response) throws ServletException, IOException {
//        // 检测是否为多媒体上传
//        if (!ServletFileUpload.isMultipartContent(request)) {
//            // 如果不是则停止
//            PrintWriter writer = response.getWriter();
//            writer.println("Error: 表单必须包含 enctype=multipart/form-data");
//            writer.flush();
//            return;
//        }
//
//        // 配置上传参数
//        DiskFileItemFactory factory = new DiskFileItemFactory();
//        // 设置内存临界值 - 超过后将产生临时文件并存储于临时目录中
//        factory.setSizeThreshold(MEMORY_THRESHOLD);
//        // 设置临时存储目录
//        factory.setRepository(new File(tempFileDir));
//
//        ServletFileUpload upload = new ServletFileUpload(factory);
//
//        // 设置最大文件上传值
//        upload.setFileSizeMax(MAX_FILE_SIZE);
//
//        // 设置最大请求值 (包含文件和表单数据)
//        upload.setSizeMax(MAX_REQUEST_SIZE);
//
//        // 构造临时路径来存储上传的文件
//        // 这个路径相对当前应用的目录
//        String uploadPath = getServletContext().getRealPath("./") + File.separator + UPLOAD_DIRECTORY;
//
//
//        // 如果目录不存在则创建
//        File uploadDir = new File(uploadPath);
//        if (!uploadDir.exists()) {
//            boolean mkdir = uploadDir.mkdir();
//            if (!mkdir) {
//                //判断是否创建文件夹，如果安全管理器有限制则创建失败
//                onError(response.getWriter(), "目录创建失败");
//                return;
//            }
//        }
//
//        try {
//            // 解析请求的内容提取文件数据
////            @SuppressWarnings("unchecked")
//            List<FileItem> formItems = upload.parseRequest(request);
//
//            if (formItems != null && formItems.size() > 0) {
//                // 迭代表单数据
//                for (FileItem item : formItems) {
//                    // 处理不在表单中的字段
//                    if (!item.isFormField()) {
//                        String fileName = new File(item.getName()).getName();
//                        String filePath = uploadPath + File.separator + fileName;
//                        //计算输出文件的路径
//                        File storeFile = new File(filePath);
//                        // 在控制台输出文件的上传路径
//                        System.out.println(filePath);
//                        // 保存文件到硬盘
//                        item.write(storeFile);
//                        request.setAttribute("message",
//                                "文件上传成功!");
//                    }
//                }
//            }
//        } catch (Exception ex) {
//            request.setAttribute("message",
//                    "错误信息: " + ex.getMessage());
//        }
//
//
//        // 跳转到 message.jsp
////        getServletContext().getRequestDispatcher("/message.jsp").forward(
////                request, response);
//    }
//
//    /**
//     * 发生了错误
//     */
//    public void onError(PrintWriter writer, String message) {
//        writer.println(message);
//        writer.flush();
//    }
//
//
//}